System and method for non-programmers to dynamically manage multiple sets of xml document data

ABSTRACT

A system and method for dynamically retrieving, manipulating, updating, creating, and displaying data from sources of Extensible Markup Language (XML) documents. The program memory comprises system-user entered data definitions and business rules. The system imports XML document data into the system data definitions, processes the data using the business rules definitions and exports XML documents. The system can automatically create XML document formats from its data definitions and can automatically create its data definitions from XML document formats. The system-user can also define the mapping between XML document formats and the system data definitions. The system data definition is the combination of a Relational data model, an Object data model, and an XML data model.

CROSS REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No.13/152,810 filed Jun. 3, 2011, which is a divisional of U.S. patentapplication Ser. No. 11/523,746 filed Sep. 18, 2006 which is acontinuation of U.S. patent application Ser. No. 09/976,710 filed Oct.15, 2001 now, U.S. Pat. No. 7,117,220 issued Oct. 3, 2003. Each of whichis hereby incorporated by reference in its entirety.

TECHNICAL FIELD

The present invention relates generally to systems and methods forinterfacing with and using Extensible Markup Language (XML) documents;still more particularly, the present invention relates to systems andmethods that allow the non-programmer to easily modify the displayformat, functions, and filters operating upon data extracted from XMLdocuments.

BACKGROUND

Companies use XML documents to publish various types of information foruse by customers and partners. The type of information in such XMLdocuments is frequently common transactions such as invoices andpurchase orders and common reference documents such as customer profilesand price lists. Computer programmers design these XML document formatsin a technical manner. People and programs that extract data fromcorporate databases typically create the XML documents containing actualdata.

While XML formats are convenient for the company that creates them, thepartners of that company may find them incompatible with their own XMLformats, relational database schemes, and message formats and thereforedifficult to work with. In many cases, the user is forced to haveprogrammer create a program (typically transforming the XML data into anobject model for manipulation by the program) to merge, filter andtransform XML documents into the format they want. Thus, XML documentsare very difficult for the businessperson or nontechnical user tooperate. Therefore, there is a need for a system that both allows theuser to view and update XML documents in different formats, and allowsthe user to manipulate the data and perform actions without programmingskills.

SUMMARY

The present invention overcomes the limitations and shortcomings of theprior art with a system and methods for dynamically retrieving,manipulating, updating, creating, and displaying data from sources ofExtensible Markup Language (XML) documents comprises a centralprocessing unit, an input device, a program memory, a display device,mass storage, and a network. The program memory comprises system-userentered data definitions and business rules. The system imports XMLdocument data into the system data definitions (an integratedcombination of Relational and Object), processes the data using thebusiness rules definitions and exports XML documents. The system canautomatically create XML document formats from its data definitions andcan automatically create its data definitions from XML document formats;the system-user can also define the mapping between XML document formatsand the system data definitions. The system data definition is thecombination of a Relational data model, an Object data model, and an XMLdata model.

The system has three major data types: primary record types (PRTs),management record types (MRT), and dynamic documents (DD). A PRT issimilar to a relational database table—the Relational data model; theycontain most of the data. A MRT is a grouping of PRTs; they containpointers to individual PRT records and some calculated data—the Objectdata model. A DD is a restructuring of a set of MRT instances foranalysis and presentation. It is the map that creates XML data fordisplay or export of data in the Relational (PRT) and Object (MRT) datamodels; they contain pointers to the MRT components and some calculateddata. The system's data structure is much more sophisticated than thatof a relational database, and object model, or a set of XML documents.Unlike a relational database, the business rules can use the complexdata relationships of the MRTs and DDs, and system-users can easilydefine views of the data that do not conform to the constraints of therelational data model. Unlike a set of XML documents, the system-usercan easily merge data from multiple XML document formats. Also thesystem stores only one instance of duplicate XML components;manipulating the one instance automatically affects all XML documentsthat include that instance.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram of a preferred embodiment of the system forextracting and dynamically displaying data in accordance with thepresent invention.

FIG. 2 is a graphical representation illustrating the context in whichthe system and methods of the present invention operate.

FIG. 3 is a graphical representation of an exemplary embodiment for amanagement record.

FIGS. 4A, 4B, 4C, and 4D are a flowchart of an overview of the preferredmethod for initializing and operating the system in accordance with themethods of present invention.

FIG. 5 is a flowchart of the preferred method for generating managementrecord pointer families.

FIG. 6 is a flowchart of the preferred method for fetching data from anunderlying data source and constructing management records.

FIGS. 7A and 7B are a flowchart of the preferred method for executingfunctions for a new set of management records.

FIGS. 8A and 8B are a flowchart of the preferred method for executing afilter for any number of management records and their pointer families.

FIGS. 9A and 9B are a flowchart of the preferred method for creating adynamic document pointer for a new set of dynamic documents.

FIG. 10 is a flowchart of the preferred method for updating a managementrecord for a new primary record instance.

FIGS. 11A, 11B, and 11C are flowcharts of the preferred method forupdating a management record pointer instance for a changed primaryrecord instance.

FIGS. 12A and 12B are a flowchart of the preferred method for executinga function for a changed primary record instance.

FIG. 13 is a flowchart of the preferred method for maintaining afunction for a changed management record type or dynamic document.

FIG. 14 is a flowchart of the preferred method for maintaining a filterdefinition for changed management record type or dynamic document.

FIGS. 15A and 15B are a flowchart of the preferred method for executinga function for a changed management record pointer instance.

FIGS. 16A and 16B are a flowchart of the preferred method for executinga function for new dynamic document pointers.

FIG. 17 is a flowchart of the preferred method for executing a functionfor a new or changed set of dynamic document pointers.

FIGS. 18A and 18B are a flowchart of the preferred method for executinga filter for a changed dynamic document pointer.

DETAILED DESCRIPTION OF ILLUSTRATIVE EMBODIMENTS

In accordance with the present invention, a system for dynamicallyretrieving, manipulating, updating, creating, and displaying data fromsources of Extensible Markup Language (XML) documents is shown inFIG. 1. A central processing unit (CPU) 12 connects with a display andinput device 16 and a program memory 18. The CPU 12 is also coupled tothe Internet 33 and an intranet 31 in a conventional manner. XMLdocuments 37 fetched from the Internet 33 and intranets 31 aretemporarily stored until they are converted into Primary Record Types(PRTs) 26 and Management Record Types (MRTs) 24. The system 10 alsocreates XML documents 37 that it exports to the Internet 33 andintranets 31 in a conventional manner.

The memory 18 also stores a Dynamic Document (DD) 20, a MRT 24, pointersfor constructing and displaying DDs and MRTs 24, and functions, filters& sorts 42 along with an operating system. The CPU 12, under theguidance of instructions received from the program memory 18, importedXML formats 38, and from the user through the input device 16, createsMRTs 24 and DDs 20, XML documents 37, and XML formats 38 and displaysdata on the display device 16. The methods of the present inventionpreferably extract data from the Internet 33 and intranets 31, performfunctions and filters on the data, and store the extracted data as PRTs26 in the program memory 18. The MRTs 24 are then further processed withother routines in memory 18 to be displayed as DDs 20 that include auser interface to display information on the display 14. Those skilledin the art will be aware that various equivalent combinations of devicescan achieve the same results when used in accordance with the presentinvention.

Referring now to FIG. 2, the context in which the system and methods ofthe present invention operate will be described. As has been notedabove, the present invention overcomes the problems associated withpresently available tools for non programmers to easily modify thedisplay format, functions, and filters operating upon informationextracted from XML documents 37. In particular, the present inventionremoves the problems of interfacing with and analyzing data from XMLdocuments 37 by providing DDs 20 and MRTs 24. A DD 20 is a mechanism fordisplaying, manipulating, and printing MRTs, and for mapping how changesto the MRTs should update one or more XML documents. The DDs provideuser interfaces as well as display and organization rules for displayingthe data to the user 36. In the preferred embodiment, a DD 20 has theform of window on the display device 16 with a hierarchy of displaypanes. Each pane is used to display one or more or the PRTs thatcomprise a MRT. The present invention also includes procedures forentering data changes using DDs. As will be described, the process formodifying data with DDs is very simple for the user. A change enteredwith a DD automatically updates the MRTs to update other related MRTsand updates and create XML documents.

The present invention interfaces with the underlying XML documents bycopying the XML data components into normalized data objects referred toas PRTs and organizing the PRTs into recognizable business objectsreferred to as MRTs 24. Examples of business objects that are modeled asMRTs with the present invention include, but are not limited to:invoices, bills of material, purchase orders, price books, forecasts,and fund transactions. The present invention advantageously works inconjunction with underlying data sources 38,40 to reconstitute datastored therein into a structure recognizable by and easily manipulatedby the businessperson. The user can define functions (calculations),filters (selection criteria), sorts, and DDs (display and organizationrules) over MRTs.

A MRT is a user-defined collection of PRTs organized into a hierarchy.One and only one of the PRTs uniquely define a node in the hierarchy. Asingle instance of a PRT results in a single instance of a MRT hierarchynode. A single instance of the PRT assigned to the top hierarchy noderesults in a single instance of the MRT. An instance of an MRT is aManagement Record Pointer Family (MRPF) 90. In the example of FIG. 3,the Order Header is 23 the PRT that uniquely defines the MRT. A PRT iswhere the invention stores the data extracted 24 from XML documents;PRTs are similar to relational database tables. A “hook” 44 refers tothe 25 method used for linking or showing relationships between recordsstored in different PRTs. Such 26 hooks include pointers and foreignkeys. A hook typically provides a one to many relationship 27 between aparent record and a child record. As shown in FIG. 3, the hooks arerepresented by 28 lines where a single occurrence of a connecting lineattaches to the parent, and multiple 29 occurrence of the connectingline attach to child. A hook not only specifies which fields of a 30 PRTpoint to which fields of another PRT, but also specifies the number ofhooks any particular instance of one PRT can and must have with theinstances of the other PRT.

It should be understood that PRTs are unlike XML components. First anXML component instances are not shared with other XML documentinstances. In other words, two XML documents may have identical valuesin all its elements. Unlike XML components, no two PRTs have identicalvalues in the fields that uniquely identify a PRI. Second an XMLcomponent type has at most one parent component type where as a PRT canhave multiple parent PRTs. It should be understood that MRTs aredifferent than XML documents. First, a MRT can be comprised of multipleXML documents; for example a MRT can incorporate the data in both anOrder XML document, and Customer XML document, and Product XML document.Second unlike an XML document, a MRT does not have any redundant data.For example an Open Orders XML document would contain duplicate customerinformation for every order for the same customer and duplicate productinformation on every order line for the same product. A MRT does notactually include the customer and product data but has a pointer to thesingle instance of data for each customer and each product. MRTs requireless storage space than XML documents and when users change the productinformation and it is immediately reflected in all MRTs that point tothe changed product.

MRTs also have significant advantages XML documents elements, and objectdatabase composite objects. A system administrator predetermineshierarchies of XML documents and object-oriented databases, typically.The users manually maintain the pointers between the individual records.Family trees (which do not show spouses) are examples of hierarchies.The relationships are rigid and only movement from parent to child andvisa versa is permitted. Any new hierarchy is empty until parent andchild records are explicitly linked to each other either manually or bywriting a custom program to build the links. MRTs, on the other hand,automatically populate a hierarchy of PRTs using PRT hooks 81 accordingto definitions set by the user.

Also, unlike in an XML document component hierarchy where relationshipsare rigid, a parent PRT can be the child node in a MRT hierarchy. Forexample in FIG. 3, customer order header is typically a child componentto a customer component but with the present invention, the user candefine a customer order MRT where the customer order header is theparent. In this example, the customer order header is the top node forthis MRT while the customer is a single occurrence child.

FIG. 3 illustrates an example of the pointer structure of the presentinvention that is used with the MRT 24. The pointer structure ispreferably used to improve the speed for processing filters, sorts andfunctions. As has been noted above, one PRT 52, in this case orderheader, is used to uniquely identify the MRT 24. Each PRT 26 is linkedeither directly or indirectly by hooks 44 to the order header PRT. Thepresent invention also produces pointer families 46-49 to divide thePRTs 26 in the MRT 24 into groups. Each of the management record pointerfamilies (MRPF) has a lead PRT 50 that directly or indirectly throughanother lead PRT 50 has a many to one relationship with the uniqueidentifying PRT 24. The PRTs that have a one to many relationship 44with a lead PRT 50 or the one PRT 52 are included in the PRT pointerfamily 46-49. The example of FIG. 3 will be used below to illustrate theoperations performed by the present invention on MRTs 24.

Referring now to FIG. 4, an overview of the preferred method of thepresent invention is described. The preferred method begins with aseries of steps in which the user inputs defining information describedin FIG. 4A. In step 80, the user defines or imports the XML format. Instep 81 the invention creates PRTs by identifying the XML formatcomponents that have at least one child component. When the PRT alreadyexists, the user maps the XML format components to the data elements ofthe already existing PRT.

In step 82, the invention creates hooks between every PRT that itcreates and the XML component and the PRT it creates for its immediateparent XML component. The user can also define hook definitions betweentwo PRTs by specifying the fields in the child PRT that corresponds tothe unique identifying fields of the parent PRT. Next in step theinvention creates the MRT definition and its Management Record PointerFamily (MRPF) as described in FIG. 5. To manually create a MRT, the userselects a first PRT. After the user selects the PRT, the system presentsthe user with a list of all PRTs that have a hook with the first PRT orany PRTs in the list. The user then selects any of the listed PRT forinclusion in the MRT. After the user has completed selection of PRTs,the user specifies which one of the PRTs selected is the uniqueidentifier for this MRT.

Next, in step 83, the invention creates a DD for the XML format asdefined in FIG. 5B. In step 84, the user can manually enter additionalDDs. The user can now enter definitions for the rules that manipulatethe data in the MRTs and DDs. Enter definitions for functions in step85, for filters in step for 86, and for sorts in step 87. The methodsused for defining these definitions are similar to those typically usedin the art.

In FIG. 4B, an overview of the preferred method for managing the importand processing of new XML documents is described. In step 89, a userimports an XML document of a format previously imported into theinvention. In step 90, the invention creates the PRIs and ManagementRecord Pointer Instances (MRPIs) as described in FIG. 6 below. Thepreferred method, in step 91, next executes MRT pre-function filters onthe fetched data, as discussed below with reference to FIG. 8. Then instep 92, the MRT functions are executed using the fetched and filtereddata as described in FIG. 7 below. Next in step 93, MRT post-functionfilters are executed. These filters are executed with a similar processused in step 91. Now that the data from the data sources has beenretrieved, the preferred method creates dynamic document pointers (DDP)for displaying the data in step 94 (See FIG. 9 and discussion below). Aswith MRTs, pre-function filters (See FIG. 18 and discussion below),functions (See FIG. 16 and discussion below), post-function filters, andsorts are executed in steps 95, 96, 97, and 98, respectively. Then instep 98, the dynamic document pointer's (DDP's) calculated fields,MRPF's calculated fields, and the PRIs are organized into panes andrecords for display in a window or for writing of XML document for eachDD instance.

In FIG. 4C, an overview of the preferred method for managing theprocessing of data changes entered by users is described. The user cannow enter revisions to update the data using the DD displays in step100. In step 101, the method first determines whether the changeincludes a new PRI record because the user entered new unique identifiervalues for the affected PRT. If change is not a new PRI, step 102updates the existing affected PRI. If a new PRI is required step 103created the new PRI, and step 104 determines if the PRIs PRT is the leadPRT for a Management Record Pointer Family. If it is not a lead PRT,step 105 updates the appropriate MPRI to now include the new PRI. Whileif it is a new lead PRT, step 106 creates the new MRPI. Next, in step107, the present invention executes the functions and filters for therevision. If any of the functions changes data values, step 108 sendsthose revisions to step 101 to be processed in the same manner as userentered revisions. If the functions produced no data revisions, step 109follows where the DDs 20 are updated to reflect the revision. Then instep 110, the method updates DDP records for display in a window orwriting of an XML document.

In FIG. 4D, an overview of the preferred method for managing userchanges to processing rules is described. In step 11 1, the user entersa change to one of the rules that manage the data. In step 112 thepreferred method tests whether the revision is a function revision. Ifnot, the process continues to step 114. However, if the revision is afunction revision, the function is executed with the revision in step113, and as described below with reference to FIG. 13. In step 114, thepreferred method determines whether the revision is a filter revision.If not, the process continues to step 116. However, if the revision is afilter revision, the filter is reexecuted using the revision in step115, and as described below with reference to FIG. 14. Then in step 116,the preferred method test whether the revision is a sort revision. Ifnot, the method continues to step 118. However, if the revision is asort revision, the sort is executed in step 117. In step 118, thepreferred method tests if processing the revision as described aboveresulted in revisions to data. If there are, the method loops to step101. If the revision did not generate other revisions, the method movesto step 119 where it updates the display of the DDs to reflect changesto the sequence of data and the inclusion or omission of data affectedby the changes to the filter criteria.

In FIG. 5, the preferred method for generating MRTs and theircorresponding Management Record Pointer Families (MRPFs) is described.The process begins in step 120 where the user imports or enters an XMLformat. In step 121 where the invention identifies all the PRTs thatcomprise the XML document format. For every component within the XMLdocument format that contains one or more components, the inventionidentifies a potential PRT. In step 122, the user indicates if the PRTalready exists. If it does exist, in step 124 the user maps the fieldlevel components in the XML document to the fields in an existing PRT.The method then proceeds to step 129. If it does not exist the methodautomatically creates a new PRT. Step 126 checks the PRTs to determineif it is a multiple occurrence component: a multiple occurrencecomponent can have more than one instance in a single XML document. Ifit is a multiple occurrence PRT, step 127 it creates a new MRPF withthat PRT as its lead PRT (item 50 in FIG. 3). If it is a singleoccurrence PRT, step 128, the invention assigns the PRT to the MRPFwhere its parent PRT is the lead PRT. In step 129, the method determinesif the XML format has any remaining PRTs to process. If any remain themethod proceeds to step 121 to process the next PRT.

In FIG. 6, the preferred method for copying the data in XML documentsinto the invention's DDs, MRTs, and PRTs. This process begins when themethod receives a new XML document the user queried or some otherprogram sent to the invention. In step 130, the XML document is read. Instep 131 the components within the XML document that comprise one of itsPRIs are read. Step 132 determines if the read components are for a newor existing PRI. If the PRI already exists, step 133, updates theexisting PRI to reflect the new data values and step 134 updates theMRPF instance records (MRPIs) that use the changed PRI as described inFIG. 11. If the XML document includes a new PRI, step 135 creates it andstep 136 updates the MRPIs that use the new PRI as described in FIG. 10.Step 137 determines if any additional PRIs exist within the XMLdocument. If any remain, the invention returns to step 131 to processthe next PRI. When all the PRIs are processed, step 138 recreates theDDs as described in FIG. 11.

Referring now to FIGS. 7A and 7B, the preferred method for executingfunctions will be described. A function is one or more mathematical,financial, and statistical calculations performed using the fields ofthe MRT's PRTs. Examples of functions include: add, subtract, multiply,divide, round, test, join, summarize, generate a random number, log,remainder, and calculate present value. Examples of “group by functions”include: any occurrence, first occurrence, last occurrence, sum,average, count, maximum, minimum, standard deviation, variance, and netpresent value. The present invention is particularly advantageousbecause any combination of PRT fields and any MRPF calculated fields canbe used in a function. If the field being used is not in the pointerfamily or one of the fore parents of the pointer family to which theresults are assigned, the present invention requests that the user enterthe “group by function” it should perform on that field prior to usingit in the calculation. For example, if a user wishes to calculate anorder discount by multiplying the order line dollar amounts by the orderheader discount and then store the results in the order header, the userwould specify the “sum” group by function for the order line dollaramounts because order lines are children not fore parents of the orderheader where the result is stored.

The user specifies if particular functions should be executed prior toor after the filters are executed. If the user wants, for example, tonot display tax order lines but wants to include the tax amount fromthose lines in the total order amount, the function to calculate totalorder amount from the order lines occurs prior to filtering out the taxorder lines. If the user wants, for example, to not display tax orderlines and does want to include the tax amount from those lines in thetotal order amount, the function is executed after filtering out the taxorder lines.

The present invention attempts to minimize the time it takes to run thefunctions for a new set of management record instances (MRIs) by runningeach function only once and by reading each PRI as few times asnecessary. Because functions can include the results (calculated fields)of other functions, the present invention “restates” functions toimprove calculation speed. The present invention first ensures that allfunctions are restated as only PRT fields and group by functions of PRTfields. Restatement eliminates (except for group by functions) onefunction being dependent upon another function because that functionuses the result of the other function. Restatement occurs for eachfunction when the user first defines (enters or maintains) it or one ofits component functions. Besides replacing calculated fields with thefields from which they are calculated, the present invention alsodetermines in which pass a specific function should be processed. For aparticular MRI, the present invention must make multiple passes when agroup by field from one level in the MRPF hierarchy is used in afunction in another level in the MRPF hierarchy and the result of thatfunction is used in another function in the original group by functionhierarchy level. For each function, the present invention checks to seeif that function is comprised of any function which uses a group byfields from a different hierarchy or uses a calculated field from ahierarchy level higher than the current level. If either of the abovetwo conditions exist, the present invention adds one to the calculationpass sequence number. The present invention then runs the same routineon the subfunctions that meet the test conditions. The present inventioncontinues this process until it has no more sub-functions to test. As aresult of this process, each function has a pass sequence number.

As shown in FIGS. 7A and 7B, the method starts with step 150 in whichthe MRT definitions are read. The present invention processes each MRIseparately. Then, in step 151, a MRI is read and the pass sequencenumber is set equal to zero. In step 152, the method reads the lowestunprocessed MRPF level for this pass. First, the method executes foreach MRPI all the functions with a pass sequence number of zero at thesame time. It starts with the MRPFs that are lowest in the hierarchy andworks its way up. In step 153, the method reads the MRPF's functions.Then in step 154, the method reads other MRPF's group by functions thatuse this level. Group by functions are executed with the MRPF theysummarize, not the MRPF where the result is stored. The MRPIs of theMRPF are then read in step 155. Then in step 156, the functions for thisMRPF are executed and added to the MRPI. The group by accumulators isthen updated. Group by accumulators store not only the results of thegroup by calculation, but also enough information to recalculate theamount without rereading all the MRPIs if one of the component MRPIchanges. For example, a “mean” group by accumulator includes not onlythe means but also the total number of MRPIs. Next in step 158, thesystem determines whether the MRPI being used to execute the functionsis the last MRPI for this MRPF. If not, the method returns to step 155,otherwise the process continues in step 159. In step 159, the group byresults is added to the parent MRPI. Then in step 160, the method testwhether this is the last MRPF for this MRT. If not, the process loops tostep 152 to process any unprocessed MRPFs, otherwise the processcontinues in step 161. In step 161, the method determines if this is thelast pass. The higher the pass sequence number that a group by functionhas the latter it gets processed. The sequence number is based on thenesting of the group by function. If it is not the last pass, then 1 isadded to the pass sequence number in step 162 and the method returns tostep 152 for further processing. After each pass of all the MRPIs, themethod executes the functions with the next highest pass sequence numberuntil all functions are executed. However, if it is the last pass, themethod continues in step 163 where the process tests whether this is thelast MRI to perform functions for. If not, the process returns to step151, otherwise the execution of the functions for the MRT is complete.

The present invention also provides for manipulation of the data usingfilters. The filters of the present invention are advantageous becausethe user does not need to join the underlying tables together in his/herselect statement. Users can select a subset of all possible MRTs and asubset of the MRPFs that comprise the selected MRTs. Section criteriaare applied against any PRT or calculated field in the MRT. Where therecould be multiple occurrences of the field in a MRT (such as quantitiesordered on one customer order), the user must also specify a group byfilter just as with functions. The present invention has the two specialgroup by filters “any” and “all.” The other selection criteria are:equal to, not equal to, greater than, less than, like, and exists indynamic document X. Filters can be comprised of multiple selectioncriteria. The criteria can be nested and include AND/OR conditions. Anexample of a filter is give me all MRTs where the customer is inCalifornia, and the total of the order line amounts is greater than$10,000, and any of the Salespersons are in territory one, or the orderis on hold.

Any number of filters for a MRT or its MRPFs can be active at any time.The user defines as many filters as he/she wishes and then activates anddeactivates them whenever he/she wants. Filters are executed either whenthe MRIs are fetched by the production data source or after they arestored in memory 18. The user specifies which filters should be part ofthe fetch. Because of performance concerns, fetches with group byfunctions cannot be used for fetches. The user can also indicate if thefilter is for just temporarily hiding the data or for deleting the data.If a parent MRPI is filtered out, so are its children MRPIs. Filters forMRTs are handled exactly like filters on the top most MRPF in thehierarchy.

FIGS. 8A and 8B illustrate the preferred process for executing filters.The process begins by reading any new or changed MRPI in step 170. Thena filter from the MRT definition is read in step 171. Next, in step 172,an operand is tested, and the result is saved. Since all filters operateon fields in the MRPF or on fields which have been grouped by a functioninto the MRPF, each MRPI can be fully tested to see if it should befiltered out by reading only the MRPI's calculated fields and its PRT'sPRI field values. For improved processing efficiency, the presentinvention executes all of a MRPI's filter tests one after the other. Theoperation tests are simple Boolean tests to see if the field's valueequals the value stored in the filter, or stored in the specifiedvariable, or is in the list (Dynamic Document) specified. The presentinvention stores the result (true or false) of each operation. Themethod then determines if this operand is the last operand to test instep 173. If not, the process returns to step 172 to test the nextoperand. If all the operands have been tested, then the processcontinues to step 174. In the step 174, the method looks at the resultsof each operand to determine if the entire filter results in a pass orfail. If the MRPI passed the filter, the method proceeds to step 177where the method appends to the MRPI a flag for each filter indicatingif the filter includes that particular MRPI. If the MRPI fails thefilter, the method jumps to step 178 to evaluate the filter type. Instep 178, further tests are performed to determine if the filter is adelete type. If the filter a delete type (i.e., MRPIs that are filteredout are deleted instead of not being displayed), the MRPI and itschildren MRPIs are immediately deleted in step 179 so no other filterneed process them. Any MRPI that has any parent MRPI that is excluded isitself excluded. If the filter is not a delete type, then the flag isset to exclude in step 180 for this filter in the current MRPI's MRPFfilter affects list. Any MRPI that is excluded by any active filter isnot displayed in the currently open DDs 20. Next, step 181 determineswhether there are additional filters to be processed. If so the methodloops to 171, otherwise the method tests whether this is the last MRPIto be processed in step 182. If there are more MRPIs to process, themethod returns to step 170, otherwise, the process is complete.

As has been noted above, Dynamic Documents are used to display XMLdocument data to the user. Essentially, DDs are a rearranged andreformatted MRT. A DD is a window on the display device 14 comprised ofa hierarchy of display panes. Each pane displays one or more of theMRT's PRTs and calculated fields. The user can define functions, sorts,and filters for each DD. A DD is also a tool for users to update a PRIand thereby the MRs and DDs that reference the PRT. Each DD correspondsto one MRT and each DD pane corresponds to one or more of the PRTs usedby its MRT. The advantage of using DDs to create multiple data view andupdate transactions is that the data relationships can be radicallyrestructured from that of the MRT. Child records can become parents,records can share fields, calculated fields can be created, and sets ofrecords can be summarized into single records and values.

The DDs are created by the user based on the types of information thatthe user wants to view and update. The user selects which of the PRTs inthe MRT to include in the dynamic document pointer (DDP). For userviewing or update, the invention creates DDP records by accessing thefield values in its underlying PRT's PRIs and its underlying MRPI'scalculated fields. Any PRT in the MRT can be used in the DDP and can beused more than once in a single DD. While their shared hook predefinesthe relationship between any two PRTs in a MRT, the user defines therelationship between any two PRTs in a DD. By putting a PRT in a parenthierarchy pane, the user is making that PRT the parent of all the PRTsin the children panes even if the PRTs have a different relationship inthe MRT. This capability allows the user to represent the data invirtually anyway they want even though that representation is notsupported by the production data source in which the data is stored. Forexample, a customer order MRT that has its Items PRT hooked to its OrderLines PRT which in turn is hooked to its Order Header PRT and also hasSalespersons separately hooked to its Order Header PRT, as describedabove with reference to FIG. 3, can have a DD where the Item PRT is inthe top level pane and the Salesperson is in a child pane. In thisexample, the Item has become the parent of Salesperson. The DD displaysin the top pane any Item used in any Customer Order MRT, and displays inthe child pane all the Salespersons that sold that Item on any CustomerOrder.

When the user places a PRT in a DDP, the user gains access not only tothe PRT's fields in that pane and any of its child panes, but alsoaccess to all the calculated field of the PRTts MRPF. These calculatedfields are comprised of fields of the selected PRT and also any fieldfrom any other PRT in the MRT. In the above example of the Items pane,the user could display the total amount ordered on all orders for eachitem even though the DD does not include the order lines or order headerPRTs which are required for this calculation. The user creates the DDPane definition by entering the pane's name, its position in the panehierarchy and then by selecting as many of the PRTs of the MRT that areto appear in the pane. The system then automatically joins the PRT'sMRPIs together to create the DDPs. These DDPs are the DD equivalent ofMRTts MRPIs. Each DDP corresponds to a single pane display row and canroll up into display subtotal rows.

The user specifies how to update production data sources (other than thePRTs) by defining as many separated transactions types as desired. Thenthe system, for any single update to the DD, automatically createsProduction Data source Update Transactions Instances (UTs) and poststhem to the appropriate data source. Each Production Data Source UpdateTransaction Type (PDUTT) can update as many PRTs as the user wishes; theonly restriction is that they all be in the same instance of aproduction data source. A DD's PDUTTs are similar to its pane attributesand report attributes in that it formats the field into an outputmedium. One primary difference is that a PDUTT does not always requestthe current value; it can also get the amount a value has changed by asa result of a transaction, or a literal amount stored in the PDUTT.Also, a PDUTT is different in that its instances (UTs) are only createdwhen the DDs underlying MRIs are changed. The user can have all MRIchanges result in UTs or can limit them to only changes entered throughthe DD of the PDUTT, or only when the DD is active (i.e. opened by theuser).

Referring now to FIGS. 9A and 9B, the preferred method for creating DDPsis described. First, the DD 20 is read in step 190. Then the highesthierarchy level pane definition not yet processed is read in step 191.In step 192, the pane's PRT and MRPF are read. Next, the method testswhether the MRPF is already used in an existing pane in step 193. If so,the method jumps to step 196 and avoids having to initialize the pane.On the other hand, if the pane does not exist, it must be created. Themethod creates the pane in steps 194 and 195. In step 194, the methodruns the pre-join filters on the MRPF's MRPIs. In step 195, the methodjoins the MRPIs to previously selected MRPI's for this pane, and the onefrom the parent pane. The panes are preferably joined on MRTidentification and parent MRPF ID fields. The method then continues instep 196. In step 196, the method determines if this is the last PRT tobe processed. If not, the process returns to step 192 and reads otherPRTs. Otherwise, the method continues in step 197. In step 197, themethod runs all post join filters. Then in step 198, the method testswhether any child panes for this PRT exist. If there are child panes,the method saves a copy of the joined MRPI for each child pane andcontinues directly to step 200. If there are no child panes the methodproceeds directly to step 200. In step 200, the method determines ifthis pane or its parent panes include lead PRT for all its MRPFs. Iflead PRTs are included, the method executes steps 201 and 202. In step201, the system summarized the joined MRPI's by identification of thePRTs in this and the parent panes. If all the panes include lead PRTsfor each MRPF, the summarization step 201 would have no effect; that iswhy it is shipped. The system in step 202 then runs all post summarizefilters, and moves to step 203. If lead pointers are not included, themethod moves directly to step 203 and determines whether this is thelast pane to modify. If not, the method loops to step 191, otherwise theprocess ends.

FIG. 10 illustrates the preferred method for updating a MRT for a newPRI. The method starts by reading the new PRI in step 210. Then in step211, the PRT definition and the where used list of this PRI are read.Next in step 212, the definition of the MRT listed in the where usedlist of step 211 is read. Next, the method determines if the PRT is alead PRT of a MRPF in step 213. If it is a lead PRT, the methodcontinues in step 214 where a MRPI is created. Then in step 215, thefunction and filters for the MRPI are executed. If it determined not tobe a lead PRT in step 213, then the MRPI of the MRPF is read in step218. Then in step 219, the method tests if the PRI's hook field is in anMRPI. It will rarely be true because this means the PRI was thenreferenced before it was created. If so, the PRI pointer is added to theMRPI in step 220 and then method proceeds to step 221. If the PRI's hookfield is not a MRPI, the method proceeds directly to step 221 where themethod determine if this is the last MRPI to process. If there areadditional MRPIs, the method returns to step 2 18 otherwise the methodcontinues to step 216. In step 216, the method tests whether there areadditional MRTs to process. If there are, the method jumps to step 212.If not, the method test for additional PRI to process in step 21. Forany more PRI, the method returns to step 211, or else the process iscompleted.

Referring now to FIGS. 11A, 11B, and 11C, the preferred method forupdating a MRT for a changed PRI is described. Similar to the method ofFIG. 10, the process begins by reading the changed PRI in step 230,reading the PRT definition and the where used list of this PRI in step231, and reading the definition of the MRT listed in where used list instep 232. The method next tests whether this a lead PRT for a MRPF instep 234. If the PRT is a lead PRT for a MRPF, the method continues withstep 244 of FIG. 11C. In step 244, the process determines if a key fieldwas changed. If a key field was changed, the method executes step245,246 and 247, to respectively find the old MRPI, remove the old MRPI,and create a new MRPI by executing the new PRI routine of FIG. 17A forthis MRT. However, if a key field was not changed, the method finds theold MRPI in step 248, changes the MRPI single occurrence pointer for thechanged hook fields in step 249, and then runs the functions and filterfor the changed PRIs and MRPIs. After competition of either branch, themethod returns to step 241 of FIG. 11B.

Referring back to 11A, if the PRT is not a lead PRT for a MRPF, themethod continues in step 235 by reading the lead PRIs for the MRPF. Thenin step 236, the method compares the old hook fields values to determineif they match. If there is a match, the PRI is changed by removing thepointer in the MRPI in step 237 before proceeding to step 238. In step238, the method tests if the new hook values match. If there is no matchthe method jumps to step 241. If there is a match, the PRI is changed bycreating new pointer in the MRPI in step 239. Then the method runs thefunctions and filters for the changed PRIs and MRPIs in step 240. Thenthe method test whether the current process involves the last PRT, thelast MRT or the last changed PRI in steps 241, 242, and 243,respectively. If this is not the last PRT of the last MRT for the lastchanged PRI, then the method loops to the appropriate step (i.e., steps235,231 and 230) for further processing.

The preferred method for executing a function for a changed PRI is shownin FIGS. 12A and 12B. The present invention handles PRT fields that areused in a group by function or used in the function of a child MRPFespecially for recalculation purposes. Whenever one of these PRT'sfields change, present invention not only recalculates the functions forits own MRPIs but also recalculates the group by function value and theother functions in which it is used. In other words, present inventiontreats these fields as calculated fields by finding where they are usedand making sure that the additional appropriate recalculations takeplace. The present invention does this by keeping pointers to the groupby functions and functions of the other MRPFs that use the field.

The preferred method begins by reading the PRI and the PRT definition insteps 260 and 261, respectively. Then in step 262, the function usingthe PRI is read. Next in step 263, the MRT's MRPF for the function isread. Whenever a PRT's PRI changes, the present invention finds theMRPFs that use that PRT and tests whether any of its functions use thechanged fields. In step 264, the method determines if the PRT is a leadPRT of the MRPF or used in a group by function. If so, the methodcontinues in step 269 by reading the MRPI to which the PRI points. Ineach MRPI, the present invention stores the MRPI for each MRPF parent.Each parent MRPI that has group by functions using any of the changedfields has its group by value recalculated. Recalculation does notrequire reprocessing of all the records that are included in the group.The present invention stores enough information about each group byfield to recalculate the correct balance for the before and after imageof the changed field. For example, for the average field, presentinvention also stores the number of values used as well as the actualaverage. New averages are calculated by multiplying the number of valuestimes the average then subtracting the old value and adding the newvalue and then dividing by the stored number of values. Then thefunction is executed in step 270. There functions are executed in aconventional manner. The process is similar to that used in spreadsheetsand third generation languages. In step 271, the functions for anychanged MRPI are executed, after which the method jumps to step 268.However, if the PRT is not a lead PRT of a MRPF or in a group byfunction, the method proceeds to step 265 where the MRPI is read. Next,in step 266, the method tests whether the MRPI points to a PRI. Next,the present invention checks to see it any of the calculated fields thatthe present invention just updated are used in other group by functions.If so, it recalculates the group by value in the appropriate parentMRPF's MRPI. The present invention continues this loop of cascadinggroup by executions until the set of calculated fields that arerecalculated have no impact on any other function because those group byfields are not used in any other function. If it does point to a PRI,the function is executed in step 272, and the functions for any changedMRPI are executed in step 273. The method then continues in step 267 orarrived at step 267 directly from step 266. In step 267, the methodtests whether there are any other MRPI for the changed PRI. If there areadditional MRPIs, the method returns to step 265 to read another MRPIand process it as has been described above. If there are no more MRPIs,the method moves to step 268 and tests whether this is the last functionfor the modified PRI. If not, the method returns to step 262 to retrieveand process the next function. Once all the functions have beenprocessed the present method is complete.

Generally functions are executed whenever the user accepts some changesmade to a pane row. The user has the option of deferring the executionof the affected functions until he/she wishes. Deferring changes canspeed up entry of changes. The present invention knows which otherfunctions to run because whenever a function is defined or maintained,the present invention adds a pointer to the Where Used Pointers of thePRT Fields Definition and the Where Used Pointers of the FunctionDefinition.

FIG. 13 illustrates the preferred method for maintaining a function andits corresponding calculated fields in MRPIs and DDPs. The processbegins by accepting user changes to the function in step 280. Then themethod replaces the calculated fields used in the function with itsfunction. Next, in step 282 the method updates the PRTs used in thefunction to point to the function. Then in step 283, the MRPF or the DDPtargeted to point to the function are updated. In step 284 the MRPI,pane row for the MRPI, or the DDP is read. Finally, the function is runin step 285. Then the method tests for other MRPI or PRTs affected bythe function change and returns to step 284 to process them. Once allthe MRPIs and PRT have been processed, this method ends.

FIG. 14 illustrates the preferred method for executing a filter if thefilter has been modified. The method starts by accepting the user'schanges to the filter in step 290. Then in step 291, the method updatesthe MRT definition or DD 20 pane definition to point to the filter.Next, the method reads a MRPF, a pane row, or a MRPI for filters pane instep 292. The filter is then executed with the changes in step 293. Themethod then test whether there are other MRPI or PRT affected by thefilter changes and then returns to step 292 to process them if they arepresent.

Referring now to FIGS. 15A and 15B, the preferred method for executing afunction for a change to the MRPI, as used in FIG. 17 below, isdescribed. In step 300, the images of the MRPIs before and after thechanges to the MRPI are read. The present method preferably saves imagesof the MRPI whenever anything is changed. These images are saved untilthe changes have been processed. In step 301, the MRPF of the changedMRPI is read. Then in step 302, the calculated field of the before andafter images are compared. In step 303, the method tests whether thevalue for each calculated image has changed. If there is no change, themethod repeats step 302 to get the next calculated field. However, ifthere is a change, the method moves to step 304. In step 304, thefunction(s) that use this calculated field are retrieved. In step 305,the method tests whether any of the functions using this calculatedfield are group by functions. If a group by function is involved, themethod first reads the MRPI's parent MRPI where the calculated amount isstored in step 307. Then in step 308, the group by value isrecalculated. If a group by function is not involved, the methodrecalculates the function for this MRPI in step 306. Next in step 309,the method tests whether this is the last function affected by thechange. If more functions are affected, the method returns to step 304to process those other functions. Otherwise, the method continues tostep 310 to determine if this is the last calculated field that has beenmodified. If there are more calculated fields to process the methodreturns to step 302. If not the process is complete and all the valuesare function value.

FIGS. 16A and 16B illustrate a preferred method for executing a filterfor a new or changed set of DDPs. DD functions work almost identicallyto MRT functions. The calculation logic is the same except DDPscorrespond to MRPIs. Panes correspond to MRF'Fs, and top pane DDPscorrespond to MRIs. MRT functions are always executed prior to DDfunctions. Also, if a pane does not include in itself or its parents,the lead PRT for its own lowest level MRPFs, it must be summarizedSummarization is just the process of grouping then the pane and itsparent panes. Calculated fields from the pane's MWFs must be grouped byone of the standard group by operands (See Appendix A). The userspecifies the group by operand when he/she defines the DD.

The method starts in step 320 with the DD definition being read. Thepresent invention processes each dynamic document instance (DDI)separately beginning with the lowest level panes in the pane hierarchyand working upward.

In step 231, the top-level pane DDI is read and the variable PASS LEVELis set equal to zero. In step 322, the method reads the lowestunprocessed pane hierarchy level for this pass. In step 323, the methodreads the pane's functions. Then in step 324, the method reads otherpane's group by function(s) that use this level. Group by functions areexecuted with the pane they summarize not the pane where the result isstored. The DDPs for this pane are then read in step 325. Then in step326, the function for this pane are executed. The group by accumulatorsare then updated in step 327. Next in step 328, the system determineswhether the DDP being used to execute the functions is the last DDP forthis pane. If not, the method returns to step 325, otherwise the processcontinues in step 329. In step 329, the group by accumulator values areadded to the DDI. Then in step 330, the method test whether this is thelast pane for this DD 20. If not, the process loops to step 322 toprocess any unprocessed panes, otherwise the process continues in step331. In step 331, the method determines if this is the last pass. If itis not the last pass, then 1 is added to the PASS LEVEL in step 332 andthe method returns to step 322 for further processing. After each passof all the DDI, the method executes the functions with the next highestpass sequence number until all functions are executed. However, if it isthe last pass, the method continues in step 332 where the process testswhether this is the last top DDI to perform functions for. If not, theprocess returns to step 321, otherwise the execution of the functionsfor the DD is complete.

All changes to any data is entered by the user through DDs or fetchesfrom a production data source. All changes can affect multiple DDs andMRTs. For example, if the user changes a customer's discount percentageand multiple MRTs use that field in their calculations, the presentinvention must update many MRPIs and DDPs for that one change.Therefore, when the user enters a change, the present invention firstupdates the affected PRT and then the MRPIs and finally the DDPs thatuse that PRT. The updates to the MRPIs have been described above withreference to FIGS. 4 and 5.

FIG. 17 illustrates the preferred method for updating a DD pane'sdynamic documents pointers (DDPs) and the displayed records for datachanges. Users enter data changes through any of a MR's DDs. Newlyimported XML documents also create data changes. The preferred methodidentifies data changes and ensures that all affected DDP records areeither updated with the new values or recreated. (The method forfiltering and displaying DD pane data is described in FIG. 18.) In step340, the method maintains PRIs for data enter through a DD or importedas XML documents. The changed values can be changes to existing PRIfield values including field values that are also hooks to other PRIs,as well as changes that are also new PRIs. In step 341, the methodmaintains the MPRIs for the changes PRIs as described in FIG. 10 for newPRIs and FIG. 11 for existing PRIs.

Next the method checks every DD that is currently activated to determinethe changes, if any to make to its DDP and the displayed records. Instep 342, the method tests whether the PRT is used by the DD; if notused no further processing is done on that DD. If the DD does use thePRT, step 343 checks to see if any hook fields were changed. If so step344 deletes all the DDP records that references the changed PRT. Themethod also deletes all DDP records in DD panes lower in the DD panehierarchy than that of the affected DDP. Step 344 then it recreates theDDP records as described in FIG. 9 and proceeds to step 347. When a hookfield was not changed, step 345 updates the DDP record field values withthe new PRI field values and runs the DD filters and functions on thechanged record. Then in step 346, the method runs the filters andfunctions for all records in DD panes that are lower in the DD panehierarchy and also reference the changed DDP record. In step 347, themethod runs the filters and functions for all records that are higher inthe DD pane hierarchy and reference any DDP record changed by steps 344,345, or 346. When step 348 determines the method changed any field valuein a DDP record used by the sort rules, it sorts the DD pane in step349. Finally the method redisplays all DDP records that it modified orresorted.

As an alternate method, steps that would determine which DDP recordswere affected by the change in a hook value could replace step 344. Thisalternate method would not reconstruct all the DDP records, but wouldmodify, delete, and insert only the records required by the field valuechanges. This method could be more efficient when the ratio of changedDDP records to the total number of records is very low.

FIGS. 18A and 18B illustrate the preferred process for executing filterswhen a dynamic document pointer is created or revised. DDs have threesets of filters: filters for determining what data to display on thescreen, filters for determining what data to print on a report, andfilters to determine which changes to send to targeted production datasources. All three types of DD filters work almost identically to MRTfilters. The calculation logic is the same except DDPs correspond toMRPIs, Panes correspond to MRPFs. MRT filters are always executed priorto DDfilters. Unlike MRT filters, DD filters are not all executed at thesame time for a single DDP. When first constructing a DD's DDPs tominimize the number of MRPFs processed in arriving at the pointers for apane, the present invention categorizes filters into four categories andexecutes them at different times during the creation and updating ofDDPs: 1) Prejoin filters are executed on a pane's MRPF's MRPIs prior tojoining them with the other MRPIs for the pane. Filters that haveoperands on only the fields in the PRTs for the MRPF are in thiscategory. Also filters which meet the first criteria and also use acalculated field from the MRPF and lead PRT for the MRPF is in thecurrent pane or any parent pane are in this category; 2) Post joinfilters are executed after all of a pane's MRPIs are joined togetherwith its parent pane's MRPIs. Filters that meet the above criteria butused fields from more than one MRPF are in this criteria; 3) Postsummarize filters are executed after the joined MRPIs are summarizedinto Pane Pointers. Filters which do not use calculated fields from DDfunctions are not in either of the above two categories; and 4) Postfunction filters are executed after the select functions but prior tothe display filters. All filters that use calculated fields that are theresult of DD functions are in this category.

The process begins by reading any new or changed DDP in step 380. Then afilter from the DD definition is read in step 381. Next, in step 382, anoperand is tested, and the result is saved. Since all filter operationsare on fields in the DD, each DD can be fully tested to see if it shouldbe filtered out by reading only the DDP's calculated fields. Forimproved processing efficiency, the present invention executes all of aDDPs filters one after the other. The operation tests are simple Booleantests to see if the field's value equals the value stored in the list(Dynamic Document) specified. The present invention stores the result(true or false) of each operation. The method then determines if thisoperand is the last operand to test in step 383. If not, the processreturns to step 382 to test the next operand. If all the operands havebeen tested, then the process continues to step 384. In the step 384,the method looks at the results of each operand to determine if the fullfilter results in a pass or fail. If the DDP passes the filter, themethod proceeds to step 386 where the method appends to the DDP a flagfor each filter indicating the filter includes that particular DDP. Ifthe DDP fails the filter, the method jumps to step 388 to evaluate thefilter type. In step 388, further tests are performed to determine ifthe filter is a delete type. If the filter is a delete type, the DDP andits children DDPs are deleted in step 389. Any DDP which has any parentDDP which are excluded is itself excluded. If the filter is not a deletetype, then the flag is set to exclude for this filter in the currentDDP's filter affects list in step 390. Any DDP that is excluded by anyactive filter is not displayed in the currently open DDs. Next, step 391determines whether there are additional filters to be processed. If sothe method loops to 381, otherwise the method tests whether this is thelast MRPI to be processed in step 392. If there are more MRPIs toprocess, the method returns to step 380, otherwise, the process iscomplete.

Finally, it should be understood that the present invention also usesconventional sorting and display techniques. Sorting occurs dynamicallywhen the DDPs are joined to the PRTs and displayed as pane rows. Sortingis done pane by pane in the same manner employed by conventional reportwrite and query tools. The rows in a pane can be sorted by any of PRTand/or calculated fields in the pane. The user specifies the order inwhich each field sort is executed and whether to use an ascending ordescending order. The user can also specify which, if any, sort levelsshould have total lines and what group by operand to use for each fieldfor each level. The user can also have the present invention suppressdisplaying the row details and just display the totals. When the userselects (highlights) a total row in a pane, that pane's child panesdisplay the rows for all the parent pane's detail rows that comprise theselected total row.

The display and reporting component of the present invention workssimilarly to many conventional query and reporting tools. By the timethe present invention hands over the data to be displayed, it hasalready organized it, executed its calculations, filtered and sorted it.The present invention hands over one record (a DDP and its correspondingPRIs) to the screen forms display tool. All that remains is to place therecord's values in the proper fields. Display rules entered by the usercontrol the appearance of the panes, positioning the format of the PRT'sfields, and what type of maintenance users can do to actual fieldvalues.

Users can open as many DDs at once as their hardware supports. Each DDcan be autonomous or any DD can be linked to another. To link DD all theuser need do is specify which on PRTs within the two DDs the linkoccurs. The two PRTs must be hooked together, or the PRT in both DD mustbe identical. At least one of the DDs must be linked at its top pane anda core linked DD must be designated as the controlled DD. Any DD canhave only one controlling DD and circular controls are not permitted.When the user selects a new record instance in the controlling DD, thecontrolled DD is updated to display the record instance(s) that arehooked to the new controlling record instance. The present inventiondoes this by executing the “find” function on the controlled DD; thefind parameter is the foreign key or pointer of the controlling DD'scurrent record type instance.

The present invention can save all the contents of memory it iscurrently using as a single file. If the user wishes to leave theterminal for a while, the user can save it and then recall it wheneverrequired. This save is not shared with other users. Multiple copies of asession can be made and later modified just like as can be done withspreadsheets an word processors. In a multiple user environment, thechanges to PRTs are stored in a relational database or XML documents andmultiple users can access those changes. The definitions of MRTs, hooks,DDs, functions, filters, and sorts are also stored in the same databasein special tables or XML documents setup by the present invention.Optionally MRPIs and DDPs can also be stored and maintained by thepresent invention in the same relational database or XML documents. Itis useful to store these pointers in the repository because they do notneed to then be regenerated for each user when he/she resumes working onthe shared model.

While the present invention has been described with reference to certainpreferred embodiments, those skilled in the art will recognize thatvarious modifications may be provided. For example, there may be otherembodiments for the method of executing the functions, filters and sortsused in FIG. 4 in addition to those described above. Similarly, theremay be other embodiments for the particular structure used for the MRTs,the pointer families, and DDs. These and other variations upon andmodifications to the preferred embodiment are provided for by thepresent invention that is limited only by the following claims.

What is claimed:
 1. A system for manipulating XML documents, theapparatus comprising: a device configured to receive a document in anXML format; and a device configured to define a mapping between the XMLformat and a set of data definitions in response to the apparatusreceiving the document in the XML format.
 2. The system of claim 1,further comprising: a device configured to store data from the documentin a database.
 3. The system of claim 2, wherein the database is arelational database.
 4. The system of claim 2, wherein the database isan object-oriented database.
 5. The system of claim 1, wherein theapparatus comprises the database.
 6. The system of claim 1, wherein theapparatus is a web server.
 7. The system of claim 1, further comprisinga device configured to maintain the set of data definitions and a set ofrelationship rules.
 8. An system for manipulating XML documents, theapparatus comprising: a device configured to receive a request for adocument in an XML format; and a device configured to generate thedocument in the XML format according to a mapping between the XML formatand a set of data definitions in response to the apparatus receiving therequest for the document in the XML format.
 9. The system of claim 8,further comprising: a device configured to populate the document usingdata retrieved from a database.
 10. The system of claim 9, wherein thedatabase is a relational database.
 11. The system of claim 9, whereinthe database is an object-oriented database.
 12. The system of claim 8,wherein the apparatus comprises the database.
 13. The system of claim 8,wherein the apparatus is a web server.
 14. The system of claim 8,further comprising a device configured to maintain the set of datadefinitions and a set of relationship rules.
 15. A method comprising:receiving a request for a document in an XML format; and in response tothe apparatus receiving the request for the document in the XML format,generating the document in the XML format according to a mapping betweenthe XML format and the set of data definitions.
 16. The method of claim15, further comprising: populating the document using data storedaccording to the set of data definitions and a set of relationshiprules.
 17. The method of claim 16, wherein the data is stored in adatabase.
 18. The method of claim 17, wherein the database is arelational database.
 19. The method of claim 17, wherein the database isan object-oriented database.
 20. The method of claim 15, wherein thedatabase is located in a web server.